/* 
 * File:   PlanillaAsignacionEquipoEspecial.h
 * Author: knoppix
 *
 * Created on November 16, 2014, 7:56 PM
 */

#pragma once

#include <sys/ipc.h>
#include <sys/msg.h>
#include <errno.h>
#include <cstring>
#include <cstdlib>

#include "logger/Logger.h"
#include "common/common.h"

class Configuracion;

class PlanillaAsignacionEquipoEspecial {
public:
    PlanillaAsignacionEquipoEspecial( const Configuracion& config );
    ~PlanillaAsignacionEquipoEspecial();
    
    void registrarTareaEspecialFinalizada(int idDispositivo);
    bool terminoTesteoEspecial(int posDispositivo, int idDispositivo);
    void reiniciarContadoresTesteoEspecial(int idDispositivo);
    void limpiarContadoresFinTesteo(int idDispositivo);
        
private:
    int m_ShmemMsgqueueEmisor, m_ShmemMsgqueueReceptor, m_ShmemMsgqueueReq;
    pid_t m_PidEmisor, m_PidReceptor;
    TSharedMemoryPlanillaAsignacion m_Memoria;
    
    void obtenerMemoriaCompartida();
    void devolverMemoriaCompartida();

};
